# Project 2: LEDの明るさ調整 ### **1.説明** 前回のレッスンでは、LEDの点灯・消灯と点滅を制御しました。 このプロジェクトでは、PWMを使ってLEDの明るさを制御し、呼吸のような効果をシミュレートします。 PWMはデジタル手段でアナログ出力を制御する方法です。デジタル制御を用いて異なるデューティサイクルの方形波(高レベルと低レベルを絶えず切り替える信号)を生成し、アナログ出力を制御します。一般的に、ポートの入力電圧は0Vと5Vです。 もし3Vが必要だったら?あるいは1V、3V、3.5Vの切り替えが必要だったら?抵抗を常に変えることはできません。そこでPWMを利用します。 ![](media/A53.gif) Arduinoのデジタルポートの電圧出力はLOWとHIGHのみで、それぞれ0Vと5Vに対応します。LOWを0、HIGHを1と定義し、Arduinoが1秒間に500回0または1の信号を出力するとします。 もし500回すべてが1なら5V、すべてが0なら0Vです。0101010101...のように出力すると、出力ポートは2.5Vとなり、これは映画の表示に似ています。私たちが見る映画は完全に連続しているわけではなく、実際には1秒間に25枚の画像を出力しています。この場合、人間はそれを認識できませんし、PWMも同様です。異なる電圧を得るには、0と1の比率を制御する必要があります。単位時間あたりに出力される0と1の信号が多いほど、制御はより正確になります。 PWMはデジタル手法でアナログ量を得る技術です。デジタル制御により方形波を形成し、方形波信号はオンとオフの2状態(高レベルと低レベル)だけを持ちます。0〜5Vの電圧はオン時間とオフ時間の比率を制御することでシミュレートできます。オンに費やす時間(技術的には高レベル時間)をパルス幅と呼び、PWMはパルス幅変調とも呼ばれます。 ![](media/A54.png) 緑の縦棒は方形波の1周期を表しています。各analogWrite(value)に書かれた値はパーセンテージに対応し、これをデューティサイクルと呼びます。このパーセンテージは1周期における高レベルの時間の割合、すなわちデューティサイクル = 高レベル時間 / 周期時間を指します。 図の上から下へ、最初の方形波のデューティサイクルは0%で対応する値は0、LEDの明るさは最も暗く、つまり消灯状態です。高レベルが長く続くほど明るくなります。したがって、最後のデューティサイクル100%の値は255で、LEDは最も明るくなります。50%は明るさの半分、25%はより暗い状態です。 PWMはLEDの明るさ調整やモーターの回転速度調整に多く使われ、モーターで駆動される車輪の速度も簡単に制御できます。Arduinoロボットを扱う際にPWMの利点がよりよく実感できます。 ### **2.部品** | Development Board *1 | 8833 Motor Driver *1 | Red LED Module*1 | | ------------------------- | ------------------------- | ------------------------- | | ![img](media/A42.jpg) | ![img](media/A43.jpg) | ![img](media/A44.jpg) | | 3P F-F Dupont Wire*1 | USB Cable*1 | | | ![img](media/A45.jpg) | ![img](media/A46.jpg) | | ### **3.配線図** 配線は変更せずそのままにしてください。 ![](media/A47.png) ### **4.テストコード** ブロックをドラッグして編集できます。以下のブロックは参考用です。 (1).![](media/A55.png) (2).![](media/A56.png) (3).![](media/A57.png) (4).![](media/A58.png) (5).![](media/A59.png) (6).![](media/A60.png) **完成テストコード** ![](media/A61.png) ### **5.テスト結果** コードをV4.0ボードに正常にアップロードし、配線図に従って配線を接続し、USBケーブルでコンピュータと接続してボードに電源を供給します。電源を入れると、LEDが明るくなったり暗くなったりを徐々に繰り返し、人の呼吸のような動きをします。すぐに点灯・消灯するわけではありません。 ### **6.応用練習** LEDのピンはそのままにして、コード(waitの後の値)を変更してください。 ![](media/A62.png) 開発ボードにコードをアップロードすると、LEDがよりゆっくり点滅します。